package com.malie.myspringboot.rabbitmq.exchangeTopics;

import com.malie.myspringboot.rabbitmq.ConnectionUtil;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

/**
 * 每个消费者监听自己的队列，并且设置带统配符的routingkey,生产者将消息发给broker，由交换机根据routingkey来转发消息到指定的队列。
 * <p>
 * Routingkey一般都是有一个或者多个单词组成，多个单词之间以“.”分割，例如：inform.sms
 * <p>
 * 通配符规则：
 * <p>
 * #：匹配一个或多个词
 * <p>
 * *：匹配不多不少恰好1个词
 * <p>
 * 举例：
 * <p>
 * audit.#：能够匹配audit.irs.corporate 或者 audit.irs
 * <p>
 * audit.*：只能匹配audit.irs
 */
public class Send {
    private final static String EXCHANGE_NAME = "test_topic_exchange";

    public static void main(String[] argv) throws Exception {
        // 获取到连接
        Connection connection = ConnectionUtil.getConnection();
        // 获取通道
        Channel channel = connection.createChannel();
        // 声明exchange，指定类型为topic
        channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.TOPIC);
        // 消息内容
        String message = "这是一只行动迅速的橙色的兔子";
        // 发送消息，并且指定routing key为：quick.orange.rabbit
        channel.basicPublish(EXCHANGE_NAME, "quick.orange.rabbit", null, message.getBytes());
        System.out.println(" [动物描述：] Sent '" + message + "'");

        channel.close();
        connection.close();
    }
}
